/**
 * @author 余鹏龙
 * @version 1.0
 */
public class Test {

    public static void main(String[] args) {
        //遍历数组
        int[] array = {1,2,3,4,5,6};
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
        //这次我们来认识一个全新的遍历数组的方法
    }

    public static void main3(String[] args) {
        int[] array = {1,2,3,4,5,6};
        //可以通过下标/索引取元素，也可以通过下标/索引来存元素
        array[2] = 9;
        System.out.println(array[0]);
        System.out.println(array[2]);
        //System.out.println(array[10]);  //ArrayIndexOutOfBoundsException 数组下标越界异常
        //c语言数组越界了会给一个随机值，并不会报错，Java就不一样了，所以安全性上面完全可以相信Java
        //数组名.length可以知道数组具体有多长
        System.out.println(array.length);

    }

    public static void main2(String[] args) {

        //萌新的问题：为什么数组的创建需要new，其他数据类型不需要new？
        //因为数组是引用类型，所以数组必须得new
        //那么字符串不也引用类型吗？
        //是的，字符串也是引用类型，这些常用的，编译器都给他优化了，是简写的
        String str = new String("hello");  //这俩种是一个概念
        String str2 = "hello";  //这个东西经常会使用到，所以编译器告诉我们这个语法是可以简写的

        boolean[] array = new boolean[10];  //Boolean未初始化默认为false
        System.out.println(array);
        char[] array2 = new char[10];  //char未初始化默认为、‘\u0000’ 这个是Unicode编码的值 16进制的0对应的字符 ，无法打印
        System.out.println(array2);
    }

    public static void main1(String[] args) {
        //定义数组的三种方式
        //第一种经常使用
        int[] array = {1,2,3,4,5,6};  //实际上，第一种和第二中是等价的。相当于姐妹，第一中相对来说比较简洁
        //这里重点来比较一下第二种和第三钟之间的区别
        //一般通过new关键字来实例化对象（实例化是一种术语，可以理解为新建对象）
        //能实例化数组，表明Java当中数组就是对象 -> Java中，一切皆为对象
        int[] array2 = new int[]{1,2,3,4,5,6};  //申请了六个空间，并初始化了1，2，3，4，5，6
        int[] array3 = new int[6];  //分配了内存，大小为6，在没有初始化的情况下默认里面放置的都是0

        //int array4[] ={1,2,3,4,5,6};  //这么写不会报错，但是不符合Java的语法，不推荐使用

        int[] array4;
        array4 = new int[]{1,2,3,4,5,6};

        /*  如果省略 new T[] 必须一行写完 不能换行
        int[] array5;
        array5 = {1,2,3,4,5,6};
        */
    }
}
